基于ETH1的LWIP echo server测试

创建vivado工程

在上一个HDMI的基础上进行修改硬件:

由于 ZYNQ的PS 调用EMIO方式 默认输出是GMII,而我们的网络部分(转接卡)的芯片 RTL8211是 输出RGMII的,所以这里我们需要增加一个 GMII和RGMII转换的IP模块 (Gmii to Rgmii)

image-20250623175025060

打开 GMII TO RGMII模块 设置更改成下面

image-20250623175103147

image-20250623175132990

又因为GMII TO RGMII 是高电平复位 ,但是ZYNQ 是输出低电平复位的,所以这里需要增加一个反相器(搜索utility, 在检索出来的选项里 选择 utility vector logic)

image-20250623175153058

在设置页里改成 not(反相器)将位宽改成1

image-20250623175211671

由于网口的配置要求和HDMI的配置要求有冲突,我们需要修改一下对ZYNQ的设置:

image-20250707170016275

image-20250626122914744

按下图进行连接:

image-20250626123241385

block design 修改完成后保存,然后重新 Generate Output Products 和“Create HDL Wrapper”。接下来我们还要修改约束文件,根据原理图为 Ethernet1 接口分配引脚。

image-20250623170246796

image-20250623170455309

image-20250623171033261

image-20250623171052724

保存约束文件,然后进行之后操作重新生成 BIT 文件

创建vitis工程

由于可以与Ethernet0共用同一个工程,所以不需要建立新的工程,不过还是在其基础上有所修改:

在工程的代码文件下将网口改为Ethernet1:

image-20250707165510132

image-20250707165534246

修改lwip库文件:

修改lwip211.mld文件:

根据软件安装路径,我的是在C:\Xilinx\Vitis\2021.1\data\embeddedsw\ThirdParty\sw_services\lwip211_v1_5\data这个路径下:添加以下内容:

之后打开BSP,按照下图修改设置值:

image-20250707170551773

修改lwip211.tcl文件(文件路径:C:\Xilinx\Vitis\2021.1\data\embeddedsw\ThirdParty\sw_services\lwip211_v1_5\data),添加如下内容:

同样,修改完之后一定记得右击平台工程进行Build Project:

image-20250707172615917

 

编译调试

编译工程成功后,用type-c USB线将开发板的JTAG和电脑连接,使用另外一根type-c USB线将开发板的PS UART和电脑连接。找一个网线和电脑连接上,在电脑上打开串口调试工具MobaXterm,和开发板的PS UART建立连接。通过串口观察到网络已经启动,并且 网络IP为192.168.3.150,网络端口为port 7。

image-20250707172124246

用相同路由器网段的 WINDOWS电脑(可以用本主机的IP ) ping 一下这个IP 可以ping 通,说明网络连接成功了:

image-20250813190855569

通过网络调试助手连接后,发送什么数据,就能通过网络接收到什么数据(设置的端口号是7,IP地址按照之前串口读到的板子IP地址设置),在电脑端运行个tcp client :

image-20250908152435669